package com.example.blogServer.result;

import lombok.Data;

import java.io.Serializable;

/**
 * @author Spark
 * @version 1.0
 */
@Data
//Result对象需要在网络中进行传输需要进行序列化和反序列话所以要实现serializable接口
public class Result<T> implements Serializable {

    private Integer code;//0标识请求失败 1表示请求成功
    private String msg;//错误信息
    private T data; //包装好的数据对象

    //第一个<T>是函数指定的泛型,第二个<T>与Result<T>作为一个整体返回类型,这个<T>是类指定的泛型,主要用在属性上
    //没有data的成功函数
    public static <T> Result<T> success(){
        Result<T> result = new Result<T>();
        result.code = 1;
        return result;
    }

    //有data的成功函数
    public static <T> Result<T> success(T object){
        Result<T> result = new Result<T>();
        result.code = 1;
        result.data = object;
        return result;
    }

    //请求失败
    public static <T> Result<T> error(String msg){
        Result<T> result = new Result<T>();
        result.code = 0;
        result.msg = msg;
        return result;
    }
}
